// axios的一次封装
import axios from "axios"
import router from "../router"


import store from "../stores/index.js"

// 配置根路径
axios.defaults.baseURL = 'http://119.3.122.213:8090/api/private/v1/'
// 设置请求拦截
axios.interceptors.request.use((config)=>{
    // 设置请求头
    config.headers['Authorization'] = store.state.token
    return config
})

// 设置响应拦截
axios.interceptors.response.use((res)=>{
    // 对响应数据进行过滤
    // 判断token是否失效
    if(res.data.meta.msg == '无效的token'){
        // token过期  跳转到登录页面
        store.commit('setToken','')
        localStorage.setItem('token','')
        router.push({
            path:'/login'
        })
        return res.data
    }
    return res.data

})

// 封装请求方法

let request = (url:string,method:RequestMethod,params?:Params):Promise<any>=>{
    // 传参数    get请求传参 可以直接拼接在路径上  也可以 以属性parmas的形式传参  
    // axios.get("/getgoods",{params:{id:1001}})
    // axios.get("/getgoods?id=1001)
    return new Promise((resolve:Function,reject:Function)=>{
        axios({
            url:url,
            method:method,
            params:method == 'GET'?params:null,
            data:method !== 'GET'?params:null
        }).then(res=>{
            resolve(res)
        })
    })
}

export default request